package com.ml.mall.service;

import com.ml.mall.bean.page.Page;
import com.ml.mall.bean.req.BaseDateRangeReq;
import com.ml.mall.bean.req.admin.category.AdminCategoryQueryOneReq;
import com.ml.mall.bean.req.admin.category.AdminCategoryQueryPageReq;
import com.ml.mall.bean.req.admin.purchase.PurchaseQueryReportPageReq;
import com.ml.mall.bean.req.admin.purchase.PurchaseQuerySpentCategoryReq;
import com.ml.mall.bean.req.admin.variant.VariantQueryOneReq;
import com.ml.mall.bean.req.admin.variant.VariantQueryPageReq;
import com.ml.mall.bean.req.supplier.SupplierPurchaseQueryOneReportReq;
import com.ml.mall.bean.res.admin.PurchaseQueryOneRes;
import com.ml.mall.bean.res.admin.PurchaseReportPageRes;
import com.ml.mall.bean.res.admin.TypeSalesRes;
import com.ml.mall.bean.res.admin.category.AdminCategoryQueryPageRes;
import com.ml.mall.bean.res.admin.category.AdminCategoryQueryReportPageRes;
import com.ml.mall.bean.res.admin.variant.VariantQueryOneRes;
import com.ml.mall.bean.res.admin.variant.VariantQueryPageRes;
import com.ml.mall.bean.res.admin.variant.VariantQueryTopRes;
import com.ml.mall.bean.res.admin.vo.AdminOverviewSalesByCountryVO;
import com.ml.mall.bean.res.admin.vo.TypeSalesAndTotalSalesRes;
import com.ml.mall.bean.res.supplier.SupplierPurchaseQueryPageRes;
import com.ml.mall.bean.res.supplier.SupplierVariantQueryPageRes;
import com.ml.mall.bean.vo.DateValueVO;

import java.util.List;

/**
 * Created by kyyang on 2021/7/3 14:44
 */
public interface AnalyticsSupplierService {

    /**
     * @description: 查询某一买家 消费一级目录
     * @author kyyang
     * @date 2021/7/3 14:45
     * @version 1.0
     */
    Page<SupplierVariantQueryPageRes> supplierPurchaseCategoryQueryPage(PurchaseQuerySpentCategoryReq req) throws Exception;

    /**
     * @description: 查询卖家目录销售报告top
     * @author kyyang
     * @date 2021/7/3 15:59
     * @version 1.0
     */
    TypeSalesAndTotalSalesRes supplierCategoryQueryTop(BaseDateRangeReq req) throws Exception;

    /**
     * @description: 卖家查询洲属销售报告
     * @author kyyang
     * @date 2021/7/3 16:43
     * @version 1.0
     */
    List<AdminOverviewSalesByCountryVO> supplierCountryQueryReport(BaseDateRangeReq req)throws Exception;

    /**
     * @description: 按照一级分组查询销售额
     * @author kyyang
     * @date 2021/7/3 17:02
     * @version 1.0
     */
    Page<AdminCategoryQueryReportPageRes> supplierCategoryQueryPage(AdminCategoryQueryPageReq req)throws Exception;

    /**
     * @description: 查询某一目录统计详情
     * @author kyyang
     * @date 2021/7/3 17:13
     * @version 1.0
     */
    List<DateValueVO> supplierCategoryQueryOne(AdminCategoryQueryOneReq req)throws Exception;

    /**
     * @description: 查询某一目录子目录的销售额统计；参照管理员；子目录分页；只不过此处要求是查询的订单是该卖家卖出的
     * @author kyyang
     * @date 2021/7/3 17:24
     * @version 1.0
     */
    Page<AdminCategoryQueryPageRes> supplierCategoryQueryOneSubsReport(AdminCategoryQueryPageReq req)throws Exception;

    /**
     * @description: 查询卖家商品变体销售报告 top n
     * @author kyyang
     * @date 2021/7/3 17:37
     * @version 1.0
     */
    List<VariantQueryTopRes> supplierVariantQueryTop(BaseDateRangeReq req)throws Exception;

    /**
     * @description: 分页查询变体汇总
     * @author kyyang
     * @date 2021/7/3 17:46
     * @version 1.0
     */
    Page<VariantQueryPageRes> supplierVariantQueryPage(VariantQueryPageReq req)throws Exception;

    /**
     * @description: 卖家查询某一个变体的时间范围内的销售报告
     * @author kyyang
     * @date 2021/7/3 17:54
     * @version 1.0
     */
    VariantQueryOneRes supplierVariantQueryOne(VariantQueryOneReq req)throws Exception;

    /**
     * @description: 卖家订单报告
     * @author kyyang
     * @date 2021/7/4 10:34
     * @version 1.0
     */
    PurchaseQueryOneRes supplierOrderQueryReport(BaseDateRangeReq req, Long companyId) throws Exception;

    /**
     * @description: 查询卖价查询自己店铺买家报告 top N
     * @author kyyang
     * @date 2021/7/4 11:27
     * @version 1.0
     */
    List<SupplierPurchaseQueryPageRes> supplierPurchaseQueryTop(BaseDateRangeReq req) throws Exception;

    /**
     * @description: 查询卖价查询自己店铺买家报告
     * @author kyyang
     * @date 2021/7/4 12:08
     * @version 1.0
     */
    PurchaseQueryOneRes supplierPurchaseQueryOneReport(SupplierPurchaseQueryOneReportReq req) throws Exception;

    /**
     * @description: 卖家分页查询自己下属商品辩题销售业绩
     * @author kyyang
     * @date 2021/7/4 12:14
     * @version 1.0
     */
    Page<PurchaseReportPageRes> supplierPurchaseQueryPage(PurchaseQueryReportPageReq req)throws Exception;
}
